﻿using Domain.Entities.ToDo;
using FluentMigrator;
using FrameworkCore.Extensions;

namespace AiBLSmartEdu.Module.ToDo.API.Migrations;

[Migration(202410161421)]
public class ToDoAddColumn : ForwardOnlyMigration
{
    public override void Up()
    {
        Alter.Table(MigrationExpressions.GetTableName(typeof(ToDoItem)))
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.Title))).AsString(100).Nullable().WithColumnDescription("标题。")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.Description))).AsString(500).Nullable().WithColumnDescription("任务截止日期。")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.DueDate))).AsDateTime().Nullable().WithDefaultValue(null).WithColumnDescription("任务截止日期。")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.IsCompleted))).AsBoolean().Nullable().WithDefaultValue(null).WithColumnDescription("是否完成。")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.Priority))).AsInt32().Nullable().WithDefaultValue(null).WithColumnDescription("任务等级：1：高 2：中 3：低")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItem>(nameof(ToDoItem.CustomerId))).AsInt64().Nullable().WithDefaultValue(null).WithColumnDescription("外键：用户标识");

        Alter.Table(MigrationExpressions.GetTableName(typeof(ToDoCategory)))
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoCategory>(nameof(ToDoCategory.Name))).AsString(100).Nullable().WithColumnDescription("类别名称。")
           .AddColumn(MigrationExpressions.ColumnNameFor<ToDoCategory>(nameof(ToDoCategory.CustomerId))).AsInt64().Nullable().WithDefaultValue(null).WithColumnDescription("外键：用户标识");

        Alter.Table(MigrationExpressions.GetTableName(typeof(ToDoItemCategory)))
          .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItemCategory>(nameof(ToDoItemCategory.ToDoCategoryId))).AsInt64().Nullable().WithDefaultValue(null).WithColumnDescription("外键：分类标识")
          .AddColumn(MigrationExpressions.ColumnNameFor<ToDoItemCategory>(nameof(ToDoItemCategory.ToDoItemId))).AsInt64().Nullable().WithDefaultValue(null).WithColumnDescription("外键：待办标识");
    }
}
